ORG #8000 pyREP EQU #4880 pxREP EQU 80 pySPC EQU #50E0 pxSPC EQU 30 LineYs DEFW #4000,#4020,#4040,#4060 DEFW #4080,#40A0,#40C0,#40E0 DEFW #4800,#4820,#4840,#4860 DEFW #4880,#48A0,#48C0,#48E0 DEFW #5000,#5020,#5040,#5060 DEFW #5080,#50A0,#50C0,#50E0 GetIB DEFS 110 GetIL DEFW 0 CurY DEFW 0 CurX DEFB 0 Score DEFW 0 HSptr1 DEFW 0 HSptr2 DEFW 0 HSDoneIt DEFB 0 HSy DEFW 0 HighScores EQU #7300 Cset EQU #7B00 Wset EQU #7F00 PrintMess PUSH IX:PUSH BC:PUSH HL LD E,(IX):LD D,(IX+1) LD (CurY),DE XOR A LD (CurX),A CALL DWMess POP HL:POP BC:POP IX INC IX:INC IX CALL SkipTZ DJNZ PrintMess RET Game POP BC:LD HL,#0500:PUSH HL:PUSH BC:RET PrintSpc LD HL,SpcMess:LD B,1 LD IX,LineYs+46 JP PrintMess PrintBlurb3 LD HL,ThirdShit:LD B,24 JR Burble PrintBlurb2 LD HL,SecondShit:LD B,24 JR Burble PrintBlurb1 LD B,24 LD HL,FirstSheet Burble LD IX,LineYs CALL PrintMess RET Begin0Ex LD HL,0:LD (Score),HL CALL CLS:CALL PrintBlurb1 CALL WaitTS CALL CLS:CALL PrintBlurb2 CALL WaitTNS CALL WaitTS CALL CLS:CALL PrintBlurb3 CALL WaitTNS CALL WaitTS LD HL,0:LD (Score),HL BeginSc3 CALL HighDisp CALL PrintSpc Sc3lp LD BC,57342:IN A,(C):BIT 2,A JR Z Begin0Ex LD BC,32766:IN A,(C):BIT 0,A JR NZ Sc3lp CALL Game POP HL:LD (Score),HL CALL Report JR BeginSc3 WaitTS LD BC,32766:IN A,(C):BIT 0,A JR NZ WaitTS:RET WaitTNS LD BC,32766:IN A,(C):BIT 0,A JR Z WaitTS:RET HighDisp CALL CLS LD IX,LineYs LD HL,Mess6 LD B,4 CALL PrintMess XOR A:LD (HSDoneIt),A LD HL,HighScores LD A,1:LD (CurX),A LD A,"1 HighLoop PUSH AF:PUSH HL:PUSH IX LD E,(IX):LD D,(IX+1) LD (CurY),DE PUSH IX PUSH HL:CALL OutChar:POP HL POP IX CALL LeaveLine JP C HighL1 LD A,10:LD (CurX),A CALL DWMess LD A,0:LD (CurX),A POP IX:POP HL:POP AF CALL SkipTZ LD E,(HL):INC HL:LD D,(HL):INC HL PUSH HL:PUSH AF LD L,(IX):LD H,(IX+1) LD BC,27:ADD HL,BC PUSH IX:CALL DispNo:POP IX POP AF:POP HL HighL2 INC IX:INC IX INC A CP "9"+1 JR NZ HL1 LD A,"A HL1 CP "H JR NZ HighLoop INC HL:INC HL:LD (HSptr2),HL LD A,(HSDoneIt) OR A RET Z LD HL,(HSy):LD (CurY),HL LD A,10:LD (CurX),A CALL GetInput CALL InsertEnt LD HL,0:LD (Score),HL CALL HighDisp RET CLS LD HL,#4000 LD DE,#4001 LD BC,#1800 LD (HL),0 LDIR LD BC,#2FF LD (HL),#F LDIR LD A,1:OUT (#FE),A RET InsertEnt LD BC,(GetIL):INC BC:INC BC:INC BC LD HL,(HSptr2) ADD HL,BC EX DE,HL LD HL,(HSptr2) PUSH HL:PUSH DE LD HL,(HSptr2):LD DE,(HSptr1) OR A:SBC HL,DE LD B,H:LD C,L INC BC POP DE:POP HL LDDR LD HL,GetIB LD DE,(HSptr1) LD BC,(GetIL) LDIR EX DE,HL LD (HL),0:INC HL LD DE,(Score) LD (HL),E:INC HL LD (HL),D RET GetInput LD HL,GetIB GetIl PUSH HL LD C,1 LD B,CurSpeed CALL PutCursor InLin2 DJNZ InLin3 LD A,C XOR 1 LD C,A CALL PutCursor LD B,CurSpeed InLin3 PUSH BC PUSH HL CALL ReadKey POP HL:POP BC OR A JR Z,InLin2 BIT 0,C JR Z,InLin4 CALL PutCursor InLin4 POP HL CP 8 JP Z DelChar CP #D JR Z GetIEx PUSH HL PUSH AF CALL OutChar POP AF POP HL LD (HL),A INC HL LD A,(CurX) CP 214 JP NC DelChar JR GetIl GetIEx LD (HL),0:LD DE,GetIB OR A:SBC HL,DE JP Z Silly LD A,L:CP 100:JP NC Silly4 LD (GetIL),HL LD IX,Clues LD IY,NameList SillyL1 CALL CompStr JR Z PlaceStr CALL StepIXtz CALL StepIYtz LD A,(IX):CP #FF:RET Z JR SillyL1 StepIXtz LD A,(IX):INC IX:OR A:JR NZ StepIXtz RET StepIYtz LD A,(IY):INC IY:OR A:JR NZ StepIYtz RET SkipSp LD A,(HL):CP #20:RET NZ:INC HL CompStr PUSH IX:LD HL,GetIB Cpir LD A,(HL):INC HL:CP #20:JR Z Cpir OR A:JR Z CpirF CALL ConvLC CP (IX) INC IX JR Z Cpir DEC IX CpirF LD A,(IX) OR A POP IX RET ConvLC CP "Z"+1:RET NC CP "A":RET C ADD A,"a"-"A" RET PlaceStr PUSH IY:POP HL:JR SillyOut An5 DEFM /At it again I see !/ NOP An4 DEFM /Someone/:NOP Silly LD HL,An4:JR SillyOut Silly4 LD HL,An5 SillyOut LD DE,GetIB:LD BC,0 SillyLp LD A,(HL):LD (DE),A:OR A LD (GetIL),BC:RET Z INC BC:INC DE:INC HL JR SillyLp NameList DEFM /Design Design Software/:NOP DEFM /It's a fair cop !/:NOP DEFM /Oh god knows !/:NOP DEFM /Wrong game !/:NOP DEFM /(c) N.Mottershead & S.Brattel/ NOP DEFM /Not enough Hobbits I/ DEFM / suppose ?/ NOP DEFM /Ian Livingstone I presume/ NOP DEFM /The only game more tedious/ DEFM / than this/ NOP DEFM /Still waiting !/:NOP DEFM /Strange thing to type !/:NOP DEFM /Shit somewhere else !/:NOP Clues DEFM /crystal/:NOP DEFM /s.brattel/:NOP DEFM /n.mottershead/:NOP DEFM /6031769/:NOP DEFM /(c)/:NOP DEFM /t.bridge/:NOP DEFM /warlock/:NOP DEFM /thehobbit/:NOP DEFM /sex/:NOP DEFM /fuck/:NOP DEFM /shit/:NOP DEFB #FF PutCursor PUSH AF:LD A,(CurX):PUSH AF LD A,"_ PUSH BC:PUSH DE:PUSH HL:PUSH IX CALL OutChar POP IX:POP HL:POP DE:POP BC POP AF:LD (CurX),A POP AF RET DelChar EX DE,HL LD HL,GetIB OR A:SBC HL,DE EX DE,HL JP Z GetIl DEC HL LD A,(HL) PUSH HL LD L,A LD H,0 LD DE,#7F00 ADD HL,DE LD B,(HL) EX AF,AF' LD A,(CurX) SUB B LD (CurX),A EX AF,AF' CALL OutChar EX AF,AF' LD (CurX),A POP HL JP GetIl HighL1 POP IX LD L,(IX):LD H,(IX+1) LD BC,27:ADD HL,BC LD DE,(Score) PUSH IX:CALL DispNo:POP IX LD A,0:LD (CurX),A POP HL:POP AF JP HighL2 Report CALL CLS:LD HL,pyREP LD (CurY),HL LD A,pxREP LD (CurX),A LD HL,MessRep CALL DWMess LD HL,(Score) CALL PrintDec CALL Delay RET Delay LD BC,0 Del1 PUSH IX:PUSH IX:POP IX:POP IX PUSH IX:PUSH IX:POP IX:POP IX DEC BC LD A,C:OR B:JR NZ Del1 RET CurSpeed EQU 255 ScanRate EQU 14 CharSet EQU #3C00 KeyScan LD HL,kMap LD A,(HL) RLCA LD (HL),A IN A,(#FE) OR #E0 LD C,A INC HL LD A,(HL) LD D,0 INC A AND 7 LD (HL),A LD E,A INC E ADD HL,DE LD A,#FE IN A,(#FE) LD D,A LD A,#7F IN A,(#FE) RRCA RRCA RL D LD E,C KeyS0 LD A,E XOR (HL) RET Z LD C,A XOR A LD B,#FF SCF KeyS1 RLA INC B RRC C JR NC,KeyS1 LD C,A XOR (HL) LD (HL),A LD A,E AND C JR NZ,KeyS0 LD A,(kMap+1) LD C,A ADD A,A ADD A,A ADD A,C ADD A,B LD C,A LD B,0 LD HL,kTab ADD HL,BC LD BC,40 RR D JR C,KeyS2 ADD HL,BC KeyS2 RR D JR C,KeyS3 ADD HL,BC ADD HL,BC KeyS3 LD A,(HL) RET ReadKey PUSH BC LD B,ScanRate IntLL2 PUSH BC CALL KeyScan OR A POP BC JR NZ,IntFin DJNZ IntLL2 IntFin POP BC RET kMap DEFB #7F,7 DEFB #FF,#FF,#FF,#FF DEFB #FF,#FF,#FF,#FF kTab EQU $ DEFB #00, "Z", "X", "C", "V" DEFB "A", "S", "D", "F", "G" DEFB "Q", "W", "E", "R", "T" DEFB "1", "2", "3", "4", "5" DEFB "0", "9", "8", "7", "6" DEFB "P", "O", "I", "U", "Y" DEFB #0D, "L", "K", "J", "H" DEFB #20,#00, "M", "N", "B" DEFB #00, ":", "`", "?", "/" DEFB #00,#00,#00,#00,#00 DEFB #00,#00,#00, "<", ">" DEFB "!", "@", "#", "$", "%" DEFB "_", ")", "(", "'", "&" DEFB #2C, ";",#00,#00,#00 DEFB #00, "=", "+", "-", "^" DEFB #00,#00, ".", ",", "*" DEFB #00, "z", "x", "c", "v" DEFB "a", "s", "d", "f", "g" DEFB "q", "w", "e", "r", "t" DEFB "1", "2", "3", "4", "5" DEFB #08, "9", "8", "7", "6" DEFB "p", "o", "i", "u", "y" DEFB #00, "l", "k", "j", "h" DEFB #20,#00, "m", "n", "b" DEFB #00, "Z", "X", "C", "V" DEFB "A", "S", "D", "F", "G" DEFB "Q", "W", "E", "R", "T" DEFB "1", "2", "3", "4", "5" DEFB "0", "9", "8", "7", "6" DEFB "P","O","I","U","Y" DEFB #0D, "L", "K", "J", "H" DEFB #00,#00, "M", "N", "B" SkipTZ PUSH AF SkipTZl LD A,(HL) OR A JR Z SkipTZx INC HL JR SkipTZl SkipTZx INC HL:POP AF RET PrintOne SUB 10 PUSH AF LD A,"1" CALL OutChar POP AF RET PrintDec PUSH HL:POP DE:LD C,0 LD A,D AND #F0:RRCA:RRCA:RRCA:RRCA CALL PDec LD A,D AND #F CALL PDec LD A,E AND #F0:RRCA:RRCA:RRCA:RRCA CALL PDec LD A,E AND #F CALL PDec XOR A:CALL PDec2 RET PDec OR A JR Z PDec1 LD C,1 PDec2 PUSH DE:PUSH BC OR #30 CALL OutChar POP BC:POP DE RET PDec1 BIT 0,C JR NZ PDec2 RET DispNo LD C,0 LD A,D AND #F0:RRCA:RRCA:RRCA:RRCA CALL PDig LD A,D AND #F CALL PDig LD A,E AND #F0:RRCA:RRCA:RRCA:RRCA CALL PDig LD A,E AND #F CALL PDig XOR A:CALL PDig2 RET PDig OR A JR Z PDig1 LD C,1 PDig2 PUSH HL:PUSH DE LD E,A LD D,0 LD IX,DigTab ADD IX,DE LD DE,10 LD B,7 PDigL LD A,(IX) LD (HL),A INC H ADD IX,DE DJNZ PDigL POP DE:POP HL INC L RET PDig1 BIT 0,C JR NZ PDig2 RET DWMess LD A,(HL):OR A:RET Z INC HL PUSH HL CALL OutChar POP HL JR DWMess OutChar PUSH AF LD L,A:LD H,0 ADD HL,HL:ADD HL,HL:ADD HL,HL LD DE,Cset ADD HL,DE PUSH HL:POP IX LD A,(CurX) RRCA:RRCA:RRCA AND #1F LD DE,(CurY) OR E LD E,A LD A,(CurX) AND #7 LD C,A LD B,8 OutCharL CALL GetHL LD A,(DE):XOR H:LD (DE),A INC E LD A,(DE):XOR L:LD (DE),A DEC E INC IX:INC D DJNZ OutCharL POP AF LD L,A:LD H,0 LD DE,Wset ADD HL,DE LD B,(HL) LD A,(CurX) ADD A,B LD (CurX),A LD A,1:LD A,1 LD A,1 RET GetHL LD H,(IX):LD L,0 LD A,C GetHLlp OR A JR NZ GetHLsh RET GetHLsh DEC A SRL H:RR L JR GetHLlp DigTab DEFB #1C,8,#1C,#3E,4,#3E,#E,#3E,#1C,#1C DEFB #22,#18,#22,2,#C,#20,#10,2,#22,#22 DEFB #26,8,2,4,#14,#3C,#20,4,#22,#22 DEFB #2A,8,#C,#C,#24,2,#3C,8,#1C,#1E DEFB #32,8,#10,2,#3E,2,#22,#10,#22,2 DEFB #22,8,#20,#22,4,#22,#22,#10,#22,4 DEFB #1C,#1C,#3E,#1C,4,#1C,#1C,#10,#1C,#38 LeaveLine PUSH DE:PUSH BC:PUSH HL LD A,(HSDoneIt):OR A:JR NZ LLexNC CALL SkipTZ LD E,(HL):INC HL:LD D,(HL) LD HL,(Score) OR A:SBC HL,DE JR C LLexNC JR Z LLexNC POP HL:PUSH HL LD (HSptr1),HL LD L,(IX):LD H,(IX+1) LD (HSy),HL LD A,1:LD (HSDoneIt),A POP HL:POP BC:POP DE SCF RET LLexNC POP HL:POP BC:POP DE OR A RET Mess6 DEFM / Warlock Of Firetop/ DEFM / Mountain / NOP NOP DEFM / Hall of Fame/ NOP NOP SpcMess DEFM / Press SPACE to play/ DEFM / or I for Instructions/ NOP MessRep DEFM / You scored :-/ NOP FirstSheet DEFM / / NOP NOP DEFM /You are about to enter the/ DEFM / vast and complex/ NOP DEFM /labyrinth that lies beneath/ DEFM / the awesome crags/ NOP DEFM /of Firetop Mountain ./ DEFM / Created by the evil/ NOP DEFM /Warlock to guard himself/ DEFM / and his fabulous/ NOP DEFM /treasure , the labyrinth/ DEFM / is crawling with/ NOP DEFM /vicious monsters , such as/ DEFM / Orcs , Spiders ,/ NOP DEFM /Slime Moulds / DEFM /and others , which will all/ DEFM / take/ NOP DEFM /the greatest pleasure in/ DEFM / preventing your/ NOP DEFM /return to the surface ./ NOP NOP DEFM /All you have with you is a/ DEFM / bow and your/ NOP DEFM /trusty / DEFM /sword , which has been with/ DEFM / you on/ NOP DEFM /many an adventure ./ NOP NOP DEFM /You must collect the fifteen/ DEFM / magic keys in/ NOP DEFM /order to unlock the / DEFM /Warlocks treasure chest/ NOP DEFM /and escape with your life ./ NOP NOP NOP NOP NOP DEFM /Press SPACE to continue ./ NOP SecondShit DEFM /Keys :-/ NOP NOP DEFM /Z : Move left/ NOP DEFM /X : Move right/ NOP DEFM /N : Move up/ NOP DEFM /M : Move down/ NOP DEFM /S : Draw or sheath sword/ NOP DEFM /A : Fire an arrow/ DEFM / in the direction faced/ NOP DEFM /O : Open a door/ NOP DEFM /C : Close a door/ NOP DEFM !W : Set colour or B/W display! NOP DEFM /SPACE : Centre the man on screen/ NOP DEFM /1 : Display score and number/ DEFM / of keys held/ NOP DEFM /2 : Game pause/ NOP DEFM /3 : Turn the noises on/ NOP DEFM /4 : Turn the noises off/ NOP DEFM /5 : Face left/ NOP DEFM /6 : Face up/ NOP DEFM /7 : Face down/ NOP DEFM /8 : Face right/ NOP DEFM /0 : Face in the direction/ DEFM / of motion/ NOP NOP NOP DEFM /Press SPACE to continue ./ NOP ThirdShit DEFM /General advice :-/ NOP NOP DEFM /The arrows fire and the sword/ DEFM / acts in the/ NOP DEFM /direction you are facing ./ NOP NOP DEFM /To open doors the man must/ DEFM / be next to the/ NOP DEFM / door and either facing it/ DEFM / or moving toward it/ NOP NOP DEFM /Picking up keys and opening/ DEFM / the chest is done/ NOP DEFM /by moving onto them ./ NOP NOP DEFM /Once the chest has been/ DEFM / collected you must/ NOP DEFM / find the exit now displayed/ DEFM / somewhere in the/ NOP DEFM /maze ./ NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP DEFM /Press SPACE to continue ./ DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 DEFB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0